import os, sys
import datetime
import pytest
from apiAtRun.core.CasePlugin import CasePlugin

def run():
    # 获取 python运行参数
    # 1. 读取命令行传入的参数
    pytest_cmd_config = []
    for arg in sys.argv:
        if arg.startswith("-"):
            pytest_cmd_config.append(arg)

    print(os.path.join(os.path.dirname(__file__), "core/ApiTestRunner.py"))

    # 2. 构建pytest参数
    pytest_args = [os.path.join(os.path.dirname(__file__), "core/ApiTestRunner.py")]
    pytest_args.extend(pytest_cmd_config)

    print("run pytest：", pytest_args)

    pytest.main(pytest_args, plugins=[CasePlugin()])

    # TODO 2.2 基于测试产生的测试数据，生成测试报告--allure-html  ，此时只能通过Pycharm，打开index文件，有报告的数据展示，
    # 单独的在文件夹下打开文件，是不会展示报告的，如何让其他人也可以打开查看？
    # 在python中执行cmd 命令， allure generate -c -o 测试报告
    os.system("allure generate -c -o 测试报告")


    # TODO 2.3 生成allure测试报告，双击打开直接查看
    from allure_combine import combine_allure

    # combine_allure(测试报告的路径)
    # combine_allure("./测试报告")  后面的路径名称 和第二步 中的名称一致
    # 注意： allure报告必须以服务的形式打开，直接进入目录是无法打开查看数据的
    combine_allure("./测试报告")



if __name__ == '__main__':
    current_date = datetime.datetime.now().strftime('%Y%m%d')
    log_filename = f'logdata_{current_date}.log'

    print("日志文件", log_filename)

    # TODO 1，最基础的应用，自己找符合规则的测试用例
    # pytest.main(["-vs"])

    # TODO 2. 生成测试报告 -allure
    # TODO 2.1 测试用例--生成报告所需要的数据
    pytest_args = ["-s", "-v", "./core/ApiTestRunner.py", "--capture=sys",  # 用于显示输入调试信息，设置级别，打开实时输出
                   "--clean-alluredir",  # 清空alluredir 中的历史数据
                   "--alluredir=allure-results",  # 执行过程的数据存放到allure-results中
                   "--type=yaml",  # 指定文件运行类型
                   "--cases=../examples/examples-ds",  # 指定文件运行路径
                   "--reruns=2",
                   "--reruns-delay=3"
                   ]

    print("run pytest:", pytest_args)
    pytest.main(pytest_args, plugins=[CasePlugin()])

    # TODO 2.2 基于测试产生的测试数据，生成测试报告--allure-html  ，此时只能通过Pycharm，打开index文件，有报告的数据展示，
    # 单独的在文件夹下打开文件，是不会展示报告的，如何让其他人也可以打开查看？
    # 在python中执行cmd 命令， allure generate -c -o 测试报告
    os.system("allure generate -c -o 测试报告")

    # TODO 2.3 生成allure测试报告，双击打开直接查看
    from allure_combine import combine_allure

    # combine_allure(测试报告的路径)
    # combine_allure("./测试报告")  后面的路径名称 和第二步 中的名称一致
    # 注意： allure报告必须以服务的形式打开，直接进入目录是无法打开查看数据的
    combine_allure("./测试报告")


